home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / util / cdity / MarkMouse.readme < prev    next >
Text File  |  1999-05-02  |  11KB  |  288 lines

  1. Short:    Locate mouse pointer on screens
  2. Author:   thor@math.tu-berlin.de (Thomas Richter)
  3. Uploader: thor@math.tu-berlin.de (Thomas Richter)
  4. Version:  1.00
  5. Type:     util/cdity
  6. Requires: Os 2.04 V37
  7.  
  8.  
  9. This program draws "radar like" circles around the mouse pointer if a hot
  10. key combination is pressed, to locate the position of the mouse pointer
  11. easely. Another function of this program is to toggle screens, again on
  12. a configurable key combination. The program works with precisely zero 
  13. system patches and a clean and safe implementation.
  14.  
  15. _____________________________________________________________________________
  16.  
  17. Synopsis:
  18. MarkMouse    MARKKEY,TOGGLEKEY
  19.  
  20.  
  21. MARKKEY            A keyboard - mouse button sequence that launches
  22.             the radar mouse ping. Defaults to the sequence
  23.             "LCommand RCommand"
  24.  
  25. TOGGLEKEY        A keyboard mouse sequence to toggle screens.
  26.             Defaults to "LCommand ,"
  27.  
  28. _____________________________________________________________________________
  29.  
  30. About the keyboard sequences:
  31.  
  32.  
  33. A keyboard mouse sequence is a list of sequences of keyboard - mouse button 
  34. combinations that must be pressed to invoke the selected program function.
  35.  
  36. More than one sequence can be given as alternative options, separated by
  37. a vertical bar "|".
  38.  
  39. A sequence is build on single key presses, each separated by an
  40. ampersand "&" sign. Each key press consists of a list of keyboard
  41. qualifiers which is optionally - like the shift or alt keys - and the key-
  42. board key itself, which can be left blank. 
  43.  
  44.  
  45. Syntactically,
  46.  
  47. keyboard_mouse_button_sequence := sequence [ | sequence [ | sequence...]]]
  48. sequence               := keypress [ & keypress [ & keypress...]]]
  49. keypress               := [qualifier [qualifier...]] [key]
  50.  
  51. where square brackets [] indicate optional arguments.
  52. _____________________________________________________________________________
  53.  
  54. To give some examples:
  55.  
  56.  
  57. "LCommand ,"        The left Amiga key (Commodore on some keyboards)
  58.             pressed together with the comma key. Only one
  59.             keyboard press.
  60.  
  61. "LShift LButton"    The left shift button with the left mouse button.
  62.  
  63. "LButton & RButton"    A two-key keyboard sequence. To invoke it, the
  64.             left mouse button must be pressed first, then the
  65.             right mouse button must be pressed, in this 
  66.             order. Note that "&" implies a time order!
  67.  
  68. "LButton | RButton"    Either the left button, or the right button.
  69.  
  70. "LHold RButton"        The right button must be pressed while the left 
  71.             button is hold down. Note that the left button
  72.             press is not swalloed by MarkMouse, but the right
  73.             press is.
  74.  
  75. "LHold RButton | RHold LButton"        
  76.             Either hold the left button and press the right, or 
  77.             hold the right button and press the left.
  78.  
  79. "LAlt n & RShift m"    A two-key keyboard sequence. First, the left alt
  80.             key must be pressed with the "n" key, then the
  81.             right shift key must be pressed with the "m" key.
  82.             Note that the characters are given in lower case,
  83.             failing to do so will imply an additional "LShift"
  84.             qualifier.
  85.  
  86. "MButton & Num 2"    The middle mouse button, followed by the "2" key on
  87.             the numeric key pad. Note that the keys must be
  88.             pressed in THIS order, mouse button first, keyboard
  89.             key later.
  90.  
  91. "Num 2 & MButton"    The "2" key on the numeric keyboard, followed by
  92.             the middle mouse button. Note that is different
  93.             from the sequence above as the keys must be pressed
  94.             in the opposide order.
  95.  
  96. "Num 2 | MButton"    Either the numeric key on the numeric keyboard, or
  97.             the middle mouse button.
  98.  
  99. "MHold l"        The "l" key on the keyboard while the middle mouse
  100.             button is pressed. The middle mouse button press
  101.             leaks thru to the system, the "l" key pressed after-
  102.             wards not. Pressing "l" alone *is* of course reported
  103.             to the system and ignored by MarkMouse.
  104.  
  105. "MHold l | MHold r"    The "l" key while the middle mouse button is held 
  106.             down, or the "r" key on the keyboard while the same
  107.             button is held. Note that there's no kind of
  108.             "bracketing".
  109. _____________________________________________________________________________
  110.  
  111. The full list of qualifiers:
  112.  
  113. LShift            the left shift key
  114. RShift            the right shift key
  115. Ctrl            the control key
  116. LAlt            the left alt key
  117. RAlt            the right alt key
  118. LCommand        the left Amiga (or Commodore) key
  119. LAmiga            a synonym for LCommand
  120. Commodore        again, the same key
  121. RCommand        the right Amiga key
  122. RAmiga            just the same key
  123. Amiga            again, the right amiga key
  124. Num            the key is meant to be a key on the numeric pad
  125. LHold            the left mouse button must be held down
  126. MHold            same for the middle button
  127. RHold            same for the right button.
  128. _____________________________________________________________________________
  129.  
  130. Special key names: 
  131. Note that you may always specify an "ordinary" key by the (lower case) letter
  132. printed on the key:
  133.  
  134. LButton            a left mouse button press
  135. MButton            a middle mouse button press (if available)
  136. RButton            a right mouse button press
  137. BackSpace        the backspace key
  138. Tab            the tabulator
  139. Enter            the "Enter" key on the numeric keypad, must be
  140.             specified as "Num Enter"
  141. Return            the "Return" key on the main keyboard
  142. Esc            the escape key in the upper left corner
  143. Del            the delete key above the cursor keys
  144. Up            the cursor-up key
  145. Down            the cursor-down key
  146. Left            the cursor-left key
  147. Right            the cursor-right key
  148. F1..F10            the function keys
  149.  
  150. All other keys just by what the current (default) keymap says.
  151.  
  152. _____________________________________________________________________________
  153.  
  154. Credits:
  155.  
  156. Thanks to Werner Müller for testing this program.
  157.  
  158. _____________________________________________________________________________
  159.  
  160. Implementation specific details:
  161.  
  162. The program does *not* install any patches to do what it wants to do. It
  163. differs in that point to many other "commodities" I've seen that try to
  164. do something similar. It is still safe to use, if not safer than those
  165. hacks that patch your system.
  166.  
  167. However, this has its price: The mouse pointer will become very "sluggish"
  168. if the "radar waves" are engaged. This is because the graphics is (and has
  169. to be) drawn by the input.device input handler. This was done because the
  170. current implementation of intuition swaps the screens in terms of the
  171. same handler, therefore the "FrontScreen" screen pointer in the intuition
  172. library is, at that point, always valid. Other implemenations would either
  173. call LockIBase() - which causes the same side effects of locking the mouse
  174. pointer for the same reason - or would start a patch-attack by patching
  175. every single intuition function that could possibly invalidate this pointer.
  176. It was felt that the current implementation - even though it depends on
  177. intuition internals - is the most robust solution to this problem.
  178.  
  179. The screen toggle function was, in the same spirit, not implemented by 
  180. calling any "ScreenToFront()" system function. Locking the intuition with
  181. LockIBase() will cause a dead-lock if ScreenToFront() is called, and on
  182. the other hand *not* calling LockIBase() might result in passing an invalid
  183. pointer back to the ScreenToFront() system function. Note that many programs
  184. ignore this risk, even the CBM "FKey" commodity just "calls the function
  185. and runs", hoping that nothing bad could possibly happen. The current
  186. implementation inserts a "LCommand m" keyboard sequence into the input
  187. device handler chain, hence letting the intuition input handler doing the
  188. dirty work for us. Note that this is again implemenation specific, but the
  189. most safest way I could think of.
  190.  
  191. I personally haven't been able to crash MarkMouse yet...
  192.  
  193. _____________________________________________________________________________
  194.  
  195.                          The THOR-Software Licence (v2, 24th June 1998)
  196.  
  197.  
  198. This License applies to the computer programs known as "MarkMouse". The 
  199. "Program", below, refers to such program. The "Archive" refers to the 
  200. package of distribution, as prepared by the author of the Program, 
  201. Thomas Richter. Each licensee is addressed as "you".
  202.  
  203.  
  204.  
  205. The Program and the data in the archive are freely distributable
  206. under the restrictions stated below, but are also Copyright (c)
  207. Thomas Richter.
  208.  
  209. Distribution of the Program, the Archive and the data in the Archive by a
  210. commercial organization without written permission from the author to any
  211. third party is prohibited if any payment is